package cmd

import (
	"fmt"
	"log"
	"pushgo/internal/config"
	"pushgo/pkg"

	"github.com/spf13/cobra"
)

func init() {
	rootCmd.AddCommand(cfgCmd)

	cfgCmd.Flags().BoolP("list", "l", false, "列出所有可用配置")
	cfgCmd.Flags().BoolP("show", "s", false, "显示配置内容")
	cfgCmd.Flags().StringP("config", "c", "", "指定配置文件")
	cfgCmd.Flags().StringP("file", "f", "", "生成默认配置")
}

var cfgCmd = &cobra.Command{
	Use:   "cfg",
	Short: "配置管理",
	Long:  "管理PUSHGO PLAYBOOK 配置文件",
	Run: func(cmd *cobra.Command, args []string) {
		list, _ := cmd.Flags().GetBool("list")
		show, _ := cmd.Flags().GetBool("show")
		configs, _ := cmd.Flags().GetString("config")
		file, _ := cmd.Flags().GetString("file")
		switch {
		case list:
			fmt.Println("列出所有配置文件: config1, config2, default")
		case show:
			if configs != "" {
				err := pkg.ReadFile(configs)
				if err != nil {
					log.Printf("SHOW config err: %s\n", err)
				}
			} else {
				fmt.Println("请使用 --config 指定要查看的配置文件")
			}
		case file != "":
			// 写入到文件
			err := config.Write(file)
			if err != nil {
				log.Printf("获取playbook配置 path: %s error: %s\n", file, err)
			}
		default:
			fmt.Println("使用 'cfg --help' 查看可用命令")
		}

	},
}
